// 备忘录 操作
import type { MemoInfo} from '../types/memo.types'

/**
 * 获取到 年月日
 * @param date 日期
 * @returns 
 */
export const getYmd = (date: Date):string => {
    const y = date.getFullYear();
    const m = date.getMonth() + 1;
    const d = date.getDate();
    return `${y}-${m < 10? '0' + m : m}-${d < 10? '0' + d : d}`;
}

class Memo {
    key:string;
    constructor(name:string = 'memo') {
        this.key = name;
    }

    /**
     * 获取到 具体某项的key
     * @param data 备忘录信息
     * @returns 具体某项的key
     */
    getKey (data: MemoInfo): string {
        return `${this.key}_${getYmd(data.date)}`
    }

    /**
     * 获取数据
     * @returns 所有备忘录信息
     */
    getAll(): MemoInfo[] {
        const data = [];
        for(const i in window.localStorage) {
            if(!i.startsWith(this.key)) continue;
            const item = window.localStorage[i]
            if (!item) continue;
            const memo = JSON.parse(item)
            memo.date = new Date(memo.time - 0)
            data.push(memo)
        }
        return data;
    }

    /**
     * 存在则更新，不存在则插入数据
     * @param data 备忘录信息
     * @returns 返回true 操作成功
     */
    edit(data: MemoInfo):boolean {
        data.date.toDateString()
        const memoKey = this.getKey(data);
        window.localStorage.setItem(memoKey, JSON.stringify(data))
        return true;
    }

    /**
     * 删除备忘录信息
     * @param data 备忘录信息
     * @returns 返回true 删除成功
     */
    delete(data: MemoInfo):boolean {
        const memoKey = this.getKey(data);
        window.localStorage.removeItem(memoKey)
        return true;
    }
}
export default new Memo();